home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 002 / word.arc / WORD.BAS (.txt) next >
Encoding:
GW-BASIC  |  1984-04-24  |  11.8 KB  |  415 lines

  1. 3  LPVST=60*VAL(MID$(TIME$,4))+VAL(MID$(TIME$,7)):RPVST=LPVST:UPVST=LPVST:RPVST=LPVST
  2. 4  A$="s=5:goto 1180"+CHR$(13)
  3. 5  KEY 1,A$:KEY 2,A$:KEY 3,A$:KEY 4,A$:KEY 5,A$:KEY 6,A$:KEY 7,"":KEY 8,"":KEY 9,"":KEY 10,""
  4. 6  DC=0
  5. 10  DEFINT A-Z
  6. 20  KEY OFF
  7. 30  CLS
  8. 40  TEM=255:FLAG=0:NEWF=0:RF=0
  9. 50  AMAP=133
  10. 60  LM=1:RM=80:TAB=5
  11. 70  DIM FORM$(AMAP),XX(AMAP)
  12. 80  FOR X=1 TO AMAP
  13. 90  FORM$(X)=STRING$(100,32)
  14. 95  XX(X)=X
  15. 100  MID$(FORM$(X),80,2)=CHR$(2)+CHR$(1)
  16. 110  NEXT
  17. 120  EP=67
  18. 130  FORM$(EP)=STRING$(79,"-")
  19. 140  ON ERROR GOTO 160
  20. 150  GOTO 165
  21. 160  IF ERR=53 THEN LOCATE 10,25:PRINT "no text files present";:RESUME 180
  22. 165  LOCATE 1,1:PRINT "..........................";:COLOR 8,7:PRINT "text files on this disk";:COLOR 7,0:PRINT ".............................";
  23. 170  LOCATE 2,1:FILES "*.txt"
  24. 171  FOR X=2 TO 18
  25. 172  FOR Y=1 TO 66 STEP 13
  26. 173  LOCATE X,Y+8:PRINT "    ";
  27. 174  NEXT Y
  28. 175  NEXT X
  29. 176  LOCATE 19,1:PRINT ".............................................................................";
  30. 180  LOCATE 20,25:INPUT "which text file ";FILE$
  31. 185  IF FILE$="" THEN RUN
  32. 186  IF INSTR(FILE$,".") >0 THEN 180
  33. 187  IF LEN(FILE$)>8 THEN BFILE$=MID$(FILE$,1,8):FILE$=BFILE$
  34. 190  FILE$=FILE$+".TXT"
  35. 200  BFILE$=FILE$
  36. 201  FOR X=1 TO LEN(FILE$)-4
  37. 202  IF ASC(MID$(FILE$,X,1))=32 THEN 180
  38. 203  NEXT X
  39. 205  IF MID$(FILE$,1,4)="HELP" OR MID$(FILE$,1,6)="SECRET" THEN LM=1:RM=2:GOTO 230
  40. 225  LM=1:RM=80:TB=5
  41. 230  GOSUB 2230
  42. 250  ON ERROR GOTO 510
  43. 280  LOCATE 12,30:COLOR 23,0:PRINT "loading the document":COLOR 7,0
  44. 290  GOTO 320
  45. 300  LM=1:RESUME 220
  46. 310  RM=80:RESUME 225
  47. 315  TB=5:RESUME 230
  48. 320  OPEN FILE$ FOR INPUT AS #1
  49. 330  INPUT #1, LE
  50. 340  IF LE>AMAP THEN LE=AMAP
  51. 350  FOR X=1 TO LE
  52. 355  IF X=EP THEN INPUT #1,Q$:GOTO 370
  53. 360  LINE INPUT #1,Q$
  54. 361  IF LEN(Q$)<80 THEN Q$=Q$+"                             "
  55. 362  IF MID$(Q$,1,1)=CHR$(2) THEN 370
  56. 365  MID$(FORM$(X),1,80)=Q$
  57. 370  NEXT
  58. 380  ON ERROR GOTO 410
  59. 385  IF MID$(FILE$,1,4)="help" OR MID$(FILE$,1,6)="secret" THEN TB=1:GOTO 420
  60. 390  INPUT #1, LM,RM,TB
  61. 400  GOTO 420
  62. 410  ON ERROR GOTO 0:RESUME 420
  63. 420  CLOSE #1
  64. 425  IF MID$(FILE$,1,4)="help" OR MID$(FILE$,1,6)="secret" THEN 500
  65. 430  M=INSTR(FILE$,"TXT")
  66. 440  MID$(BFILE$,M,3)="BAK"
  67. 450  NEWF=1
  68. 500  CLS:S=0
  69. 510  IF ERR=53 THEN CLOSE #1:LOCATE 23,20:PRINT "must be a new file......";:S=1:RESUME 520
  70. 520  ON ERROR GOTO 0
  71. 530  T=1:B=24
  72. 540  IF S=0 THEN GOTO 1190
  73. 550  CLS
  74. 560  V=1:H=LM:TEM=255
  75. 570  A$=" "
  76. 580  S=1:TEM$=STRING$(255,32)
  77. 590  LOCATE 25,42:PRINT " 2 ";:COLOR 8,7:PRINT "save";:COLOR 7,0:PRINT " 4 ";:COLOR 8,7:PRINT "quit";:COLOR 7,0:PRINT " 6 ";:COLOR 8,7:PRINT "alt";:COLOR 7,0:PRINT " 8 ";:COLOR 8,7:PRINT "reform";:COLOR 7,0
  78. 600  PRINT " 10 ";:COLOR 8,7:PRINT "print";:COLOR 7,0
  79. 601  LOCATE 25,1:PRINT "1 ";:COLOR 8,7:PRINT "LMs";:COLOR 7,0:PRINT " 3 ";:COLOR 8,7:PRINT "RMs";:COLOR 7,0:PRINT " 5 ";:COLOR 8,7:PRINT "TBs";:COLOR 7,0:PRINT " 7 ";:COLOR 8,7:PRINT " LINEi";:COLOR 7,0
  80. 602  PRINT " 9 ";:COLOR 8,7:PRINT "LINEd";:COLOR 7,0:PRINT "  ";CHR$(206);CHR$(205);CHR$(205);CHR$(205);CHR$(206);
  81. 605  KEY(1) ON
  82. 610  KEY(2) ON
  83. 615  KEY(3) ON
  84. 620  KEY(4) ON
  85. 625  KEY(5) ON
  86. 630  KEY(6) ON
  87. 635  KEY(7) ON
  88. 640  KEY (8) ON
  89. 645  KEY(9) ON
  90. 650  KEY (10) ON
  91. 660  KEY(11) ON
  92. 670  KEY(12) ON
  93. 680  KEY(13) ON
  94. 690  KEY(14) ON
  95. 695  ON KEY (1) GOSUB 2000
  96. 700  ON KEY (2) GOSUB 1150
  97. 705  ON KEY (3) GOSUB 2010
  98. 710  ON KEY (4) GOSUB 1740
  99. 715  ON KEY (5) GOSUB 2020
  100. 720  ON KEY (6) GOSUB 1820
  101. 725  ON KEY (7) GOSUB 2300
  102. 730  ON KEY (8) GOSUB 2800
  103. 735  ON KEY (9) GOSUB 2400
  104. 740  ON KEY (10) GOSUB 1950
  105. 750  ON KEY (11) GOSUB 1330
  106. 760  ON KEY (12) GOSUB 1360
  107. 770  ON KEY (13) GOSUB 1390
  108. 780  ON KEY (14) GOSUB 1420
  109. 790  GOSUB 1450
  110. 795  IF TEM<>255 THEN PRINT TEM
  111. 796  IF S=5 THEN S=1:GOTO 914
  112. 798  GOSUB 1900
  113. 799  GOSUB 1910
  114. 800  A$=INKEY$
  115. 810  IF A$="" AND MID$(A$,2,1)="" THEN 800
  116. 815  GOSUB 1900
  117. 820  IF ASC(A$)=0 THEN 910
  118. 830  IF ASC(A$)=8 THEN GOSUB 940
  119. 840  IF ASC(A$)=9 THEN GOSUB 1010
  120. 850  IF ASC(A$)=13 THEN PRINT MID$(FORM$(XX(V)),H,1);:CR=1:H=LM:GOSUB 1420
  121. 860  IF ASC(A$)<32 OR ASC(A$)>254 THEN 799
  122. 880  IF TEM<>255 THEN TEM=255
  123. 885  VL=INSTR(FORM$(XX(V)),CHR$(1))
  124. 890  PRINT A$;:MID$(FORM$(XX(V)),H)=A$:IF H<80 THEN MID$(FORM$(XX(V)),VL-1,1)=" "
  125. 900  H=H+1:GOSUB 1450
  126. 905  IF FLAG=1 THEN 799
  127. 910  IF ASC(MID$(A$,2))=82 THEN GOSUB 980
  128. 914  IF ASC(MID$(A$,2))=71 THEN V=1:T=1:B=24:S=4:GOSUB 1500
  129. 915  IF ASC(MID$(A$,2))=79 THEN T=LE-22:B=LE+1:V=B:S=4:GOSUB 1500
  130. 916  IF ASC(MID$(A$,2))=73 THEN T=T-24:B=B-24:V=B:S=4:GOSUB 1500
  131. 917  IF ASC(MID$(A$,2))=81 THEN T=T+24:B=B+24:V=T:S=4:GOSUB 1500
  132. 920  IF ASC(MID$(A$,2))=83 THEN GOSUB 1120
  133. 925  IF ASC(MID$(A$,2))=15 THEN GOSUB 1005
  134. 926  IF ASC(MID$(A$,2))=120 THEN GOSUB 2600
  135. 930  GOTO 799
  136. 940  DC=1:GOSUB 1360
  137. 941  IF TEM-1<=0 THEN BEEP:GOTO 1450
  138. 942  MID$(TEM$,TEM,1)=MID$(FORM$(XX(V)),H,1):MID$(FORM$(XX(V)),H,1)=CHR$(32):TEM=TEM-1
  139. 950  IF TEM >0 THEN 1450
  140. 980  MID$(FORM$(XX(V)),H+1)=MID$(FORM$(XX(V)),H)
  141. 990  MID$(FORM$(XX(V)),H)=" "
  142. 1000  GOTO 1125
  143. 1005  IF TEM=255 THEN PRINT MID$(FORM$(XX(V)),H,1);:H=INT((H-LM)/TB)*TB+LM-TB:GOTO 1450
  144. 1006  GOTO 1015
  145. 1010  IF TEM=255 THEN PRINT MID$(FORM$(XX(V)),H,1);:H=INT((H-LM)/TB)*TB+LM+TB:GOTO 1450
  146. 1015  TTEM=TEM+1:CL=255-TEM
  147. 1020  ROOM=RM-H+1
  148. 1030  IF ROOM>CL THEN 1100
  149. 1040  MID$(FORM$(XX(V)),H,ROOM)=MID$(TEM$,TTEM,ROOM)
  150. 1050  PRINT MID$(FORM$(XX(V)),H,ROOM-1);:IF ROOM=1 THEN PRINT " ";
  151. 1055  TTEM=TTEM+ROOM:CL=CL-ROOM
  152. 1060  CM=1:GOSUB 1600:CM=0
  153. 1070  FLAG=0
  154. 1080  GOTO 1020
  155. 1100  IF CL=0 THEN 1450
  156. 1101  MID$(FORM$(XX(V)),H,CL)=MID$(TEM$,TTEM,CL):PRINT MID$(FORM$(XX(V)),H,CL);
  157. 1110  MID$(FORM$(XX(V)),80,1)=" ":H=H+CL:GOTO 1450
  158. 1120  C=INSTR(FORM$(XX(V)),CHR$(1))
  159. 1121  MID$(FORM$(XX(V)),H)=MID$(FORM$(XX(V)),H+1)
  160. 1122  MID$(FORM$(XX(V)),C-1,2)=" "+CHR$(1)
  161. 1125  VV=V-T+1
  162. 1130  LOCATE VV,1:PRINT MID$(FORM$(XX(V)),1,79);:LOCATE VV,H
  163. 1140  GOTO 1450
  164. 1150  GOSUB 1900
  165. 1151  CLS
  166. 1160  IF B>LE THEN LE=B
  167. 1170  T=1:B=LE
  168. 1180  IF S<>5 THEN 1188
  169. 1182  A$=CHR$(0)+CHR$(71):GOTO 605
  170. 1188  IF S=1 THEN LOCATE 12,30:COLOR 23,0:PRINT "saving the document":COLOR 7,0
  171. 1189  IF S=3 THEN LOCATE 12,30:COLOR 23,0:PRINT "backing up document":COLOR 7,0
  172. 1190  IF S=0 OR S=4 THEN LOCATE 25,42:PRINT " 2 ";:COLOR 8,7:PRINT "save";:COLOR 7,0:PRINT " 4 ";:COLOR 8,7:PRINT "quit";:COLOR 7,0:PRINT " 6 ";:COLOR 8,7:PRINT "alt";:COLOR 7,0:PRINT " 8 ";:COLOR 8,7:PRINT "reform";:COLOR 7,0
  173. 1200  IF S=0 OR S=4 THEN PRINT " 10 ";:COLOR 8,7:PRINT "print";:COLOR 7,0
  174. 1201  IF S=0 OR S=4 THEN LOCATE 25,1:PRINT "1 ";:COLOR 8,7:PRINT "LMs";:COLOR 7,0:PRINT " 3 ";:COLOR 8,7:PRINT "RMs";:COLOR 7,0:PRINT " 5 ";:COLOR 8,7:PRINT "TBs";:COLOR 7,0:PRINT " 7 ";:COLOR 8,7:PRINT " LINEi";:COLOR 7,0
  175. 1202  IF S=0 OR S=4 THEN PRINT " 9 ";:COLOR 8,7:PRINT "LINEd";:COLOR 7,0:PRINT "  ";CHR$(206);CHR$(205);CHR$(205);CHR$(205);CHR$(206);
  176. 1210  IF NOT(S=1 OR S=3) THEN 1240
  177. 1211  IF S=3 OR NEWF=0  THEN 1220
  178. 1212  ON ERROR GOTO 1216
  179. 1213  KILL BFILE$
  180. 1214  ON ERROR GOTO 0:NAME FILE$ AS BFILE$
  181. 1215  GOTO 1220
  182. 1216  RESUME 1214
  183. 1220  IF S=1 THEN OPEN FILE$ FOR OUTPUT AS #1
  184. 1230  IF S=3 THEN OPEN BFILE$ FOR OUTPUT AS #1
  185. 1235  PRINT #1,LE
  186. 1240  FOR X=T TO B
  187. 1250  IF S=0 OR S=4 THEN LOCATE 24-B+X,1
  188. 1260  IF S=0 OR S=4  THEN IF MID$(FORM$(XX(X)),80,1)<>CHR$(2) THEN PRINT MID$(FORM$(XX(X)),1,79);
  189. 1265  ON ERROR GOTO 2500
  190. 1270  IF S=1 OR S=3 THEN IF MID$(FORM$(XX(X)),80,1)=CHR$(2) THEN PRINT #1,CHR$(2) ELSE PRINT #1,MID$(FORM$(XX(X)),1,81)
  191. 1280  NEXT X
  192. 1290  IF S=0 THEN H=LM:V=1: GOTO 580
  193. 1295  IF S=1 OR S=3 THEN PRINT#1, LM,RM,TB
  194. 1296  ON ERROR GOTO 0
  195. 1300  CLOSE #1
  196. 1305  GOSUB 1910
  197. 1310  IF S=3 OR S=4 THEN RETURN
  198. 1320  RUN
  199. 1330  GOSUB 1900
  200. 1331  IF H=80 THEN PRINT " "; ELSE PRINT MID$(FORM$(XX(V)),H,1);
  201. 1332  PRST=60*VAL(MID$(TIME$,4))+VAL(MID$(TIME$,7))
  202. 1333  IF PRST>LPVST+1 THEN Q=1 ELSE Q=Q+1
  203. 1334  LPVST=PRST
  204. 1340  V=V-Q:D=-1
  205. 1350  GOTO 1450
  206. 1360  GOSUB 1900
  207. 1361  IF H=80 THEN PRINT " "; ELSE PRINT MID$(FORM$(XX(V)),H,1);
  208. 1362  PRST=60*VAL(MID$(TIME$,4))+VAL(MID$(TIME$,7))
  209. 1363  IF PRST>RPVST+1 THEN Q=1 ELSE Q=Q+1
  210. 1364  RPVST=PRST
  211. 1365  IF DC=1 THEN DC=0:Q=1
  212. 1370  H=H-Q:D=-1
  213. 1380  GOTO 1450
  214. 1390  GOSUB 1900
  215. 1391  IF H=80 THEN PRINT " "; ELSE PRINT MID$(FORM$(XX(V)),H,1);
  216. 1392  PRST=60*VAL(MID$(TIME$,4))+VAL(MID$(TIME$,7))
  217. 1393  IF PRST>UPVST+1 THEN Q=1 ELSE Q=Q+1
  218. 1394  UPVST=PRST
  219. 1400  H=H+Q:D=1
  220. 1410  GOTO 1450
  221. 1420  GOSUB 1900
  222. 1421  IF CR=1 THEN 1422 ELSE IF H=80 THEN PRINT " "; ELSE PRINT MID$(FORM$(XX(V)),H,1);
  223. 1422  PRST=60*VAL(MID$(TIME$,4))+VAL(MID$(TIME$,7))
  224. 1423  IF PRST>DPVST+1 THEN Q=1 ELSE Q=Q+1
  225. 1424  DPVST=PRST
  226. 1425  IF CR=1 THEN CR=0:Q=1
  227. 1430  V=V+Q:D=1
  228. 1440  GOTO 1450
  229. 1450  IF V=AMAP AND H=RM THEN V=1:H=LM:B=24:T=1:S=4
  230. 1460  IF H<LM THEN H=RM-1:V=V-1
  231. 1470  IF EP=V THEN V=V+D
  232. 1480  IF V<T THEN T=T-18:B=B-18:S=4
  233. 1490  IF V>B OR (V=B AND H=RM) THEN T=T+18:B=B+18:S=4
  234. 1500  IF T<1 THEN BEEP:T=1:B=24:V=24
  235. 1510  IF B>AMAP THEN BEEP:B=AMAP:T=B-23:V=AMAP
  236. 1520  IF V>LE THEN LE=V
  237. 1530  IF S=4 THEN CLS:GOSUB 1190:S=1
  238. 1540  IF H>RM THEN H=LM:GOTO 1600
  239. 1550  IF DEL=1 THEN GOTO 1020
  240. 1560  LOCATE 25,36:PRINT USING "###";V;:PRINT " ";:PRINT USING "##";H;
  241. 1565  LOCATE 24-B+V,H
  242. 1570  COLOR 8,7:PRINT MID$(FORM$(XX(V)),H,1);:COLOR 7,0
  243. 1580  LOCATE 24-B+V,H
  244. 1585  IF DEL=2 THEN 1030
  245. 1586  GOSUB 1910
  246. 1590  FLAG=1:RETURN
  247. 1600  IF ASC(MID$(FORM$(XX(V)),RM,1))=32 OR ASC(MID$(FORM$(XX(V)),RM,1))=2 THEN V=V+1:H=LM:GOTO 1450
  248. 1610  XX=RM
  249. 1615  ON ERROR GOTO 0
  250. 1620  XX=XX-1
  251. 1630  IF XX=LM OR XX=LM-1 THEN PRINT "here":MID$(FORM$(XX(V)),80,1)=" ":V=V+1:H=1:GOTO 1460
  252. 1635  IF CM=1 AND XX<H THEN 1645
  253. 1640  IF ASC(MID$(FORM$(XX(V)),XX,1))<>32 THEN 1620
  254. 1645  IF EP=V+1 THEN EPS=2 ELSE EPS=1
  255. 1646  IF AMAP=V THEN EPS=0
  256. 1650  MID$(FORM$(XX(V+EPS)),LM,RM-XX)=MID$(FORM$(XX(V)),XX+1,RM-XX)
  257. 1660  MID$(FORM$(XX(V)),XX+1,RM-XX)=STRING$(RM-XX,32)
  258. 1670  VV=24-B+V
  259. 1680  LOCATE VV,XX+1
  260. 1685  IF V=AMAP THEN XX=XX+1
  261. 1690  PRINT MID$(FORM$(XX(V)),XX+1,RM-XX);
  262. 1700  IF S=5 THEN S=1
  263. 1705  V=V+EPS:GOSUB 1450:PRINT " ";:VV=24-B+V
  264. 1710  LOCATE VV,LM:PRINT MID$(FORM$(XX(V)),LM,RM-XX);:MID$(FORM$(XX(V)),80,1)=" "
  265. 1720  H=RM-XX+LM
  266. 1730  GOTO 1460
  267. 1740  GOSUB 1900
  268. 1741  CLS
  269. 1750  ON ERROR GOTO 1790
  270. 1760  IF MID$(FILE$,1,4)="help" OR MID$(FILE$,1,6)="secret" THEN RUN
  271. 1761  C=INSTR(FILE$,".")-1:IF FILE$=BFILE$ THEN 1770
  272. 1762  LOCATE 5,5:PRINT "WARNING everything you've changed or added to the original file ";MID$(FILE$,1,C)
  273. 1763  LOCATE 6,5:PRINT " will be lost "
  274. 1764  LOCATE 20,5:PRINT "Do you want to save your changes or additions (type Y or N) ";
  275. 1765  GOTO 1780
  276. 1770  LOCATE 5,5:PRINT "WARNING everything you've typed into the new file ";MID$(FILE$,1,C)
  277. 1771  LOCATE 6,5:PRINT " will be lost "
  278. 1772  LOCATE 20,5:PRINT "Do you want to save this file (type Y or N) ";
  279. 1780  INPUT A$:IF A$="y" OR A$="Y" THEN CLS:S=1:GOTO 1160
  280. 1781  IF A$="n" OR A$="N" THEN RUN
  281. 1790  IF ERR=53 THEN RESUME 1810 ELSE RESUME 1800
  282. 1795  CLS:GOTO 1761
  283. 1800  GOSUB 1910:S=0:CLS:GOTO 530
  284. 1810  ON ERROR GOTO 0:RUN
  285. 1820  GOSUB 1900
  286. 1830  IF MID$(FORM$(XX(V)),80,1)<>CHR$(2) THEN PRINT MID$(FORM$(XX(V)),H,1):H=1:V=V+1:GOSUB 1450:GOTO 1830
  287. 1835  MID$(FORM$(XX(V)),80,1)=" "
  288. 1836  H=1:GOSUB 1450
  289. 1840  FOR X=1 TO 6:PRINT CHR$(X);:MID$(FORM$(XX(V)),X,1)=CHR$(X):NEXT X
  290. 1850  FOR X=14 TO 27:PRINT CHR$(X);:MID$(FORM$(XX(V)),X-7,1)=CHR$(X):NEXT X
  291. 1860  FOR X=123 TO 181:PRINT CHR$(X);:MID$(FORM$(XX(V)),X-103,1)=CHR$(X):NEXT X
  292. 1865  V=V+1:GOSUB 1450
  293. 1870  IF MID$(FORM$(XX(V)),80,1)<>CHR$(2) THEN PRINT MID$(FORM$(XX(V)),H,1):V=V+1:GOSUB 1450:GOTO 1870
  294. 1874  MID$(FORM$(XX(V)),80,1)=" "
  295. 1875  FOR X=182 TO 255:PRINT CHR$(X);:MID$(FORM$(XX(V)),X-181,1)=CHR$(X):NEXT X
  296. 1876  PRINT MID$(FORM$(XX(V)),H,1);:V=V+1:GOSUB 1450
  297. 1880  GOSUB 1910
  298. 1890  GOTO 1450
  299. 1900  KEY (1) OFF:KEY (2) OFF:KEY (3) OFF:KEY (4) OFF:KEY (5) OFF:KEY (6) OFF:KEY (7) OFF: KEY (8) OFF:KEY (9) OFF:KEY (10) OFF:KEY (11) OFF:KEY (12) OFF:KEY (13) OFF:KEY (14) OFF:RETURN
  300. 1910  KEY (1) ON:KEY (2) ON:KEY (3) ON:KEY (4) ON:KEY (5) ON:KEY (6) ON:KEY (7) ON: KEY (8) ON:KEY (9) ON:KEY (10) ON:KEY (11) ON:KEY (12) ON:KEY (13) ON:KEY (14) ON:RETURN
  301. 1930  GOTO 1450
  302. 1940  RETURN 660
  303. 1950  ON ERROR GOTO 2285
  304. 1952  PRINT "normal (0) or emphasized (1) print"
  305. 1953  INPUT Z9
  306. 1954  LPRINT CHR$(27);"F":IF Z9=1 THEN LPRINT CHR$(27);"E"
  307. 1955  FOR X=1 TO LE
  308. 1960  IF X=EP THEN 1980
  309. 1970  LPRINT MID$(FORM$(XX(X)),1,79)
  310. 1980  NEXT
  311. 1985  LPRINT CHR$(27);"F"
  312. 1990  RETURN
  313. 2000  GOSUB 1900
  314. 2001  IF LM<>1 THEN LM=1:GOTO 2230
  315. 2008  LM=H:GOTO 2230
  316. 2010  GOSUB 1900
  317. 2011  IF RM<>80 THEN RM=80:GOTO 2230
  318. 2018  RM=H:GOTO 2230
  319. 2020  GOSUB 1900
  320. 2021  TB=H-LM:GOTO 2230
  321. 2230  BEEP:IF LM<1 THEN LM=1
  322. 2240  IF LM>78 THEN LM=78
  323. 2250  ON ERROR GOTO 510
  324. 2260  IF RM<3 THEN RM=3
  325. 2270  IF RM>80 THEN RM=80
  326. 2275  IF TB<1 THEN TB=1
  327. 2276  IF TB>78 THEN TB=78
  328. 2277  GOSUB 1910
  329. 2280  RETURN
  330. 2285  ON ERROR GOTO 0:RESUME 2280
  331. 2300  GOSUB 1900
  332. 2301  YY=XX(LE)
  333. 2302  IF RF=1 THEN 2310 ELSE PRINT MID$(FORM$(XX(V)),H,1);
  334. 2310  FOR X=LE-1 TO V STEP -1
  335. 2315  IF X=EP THEN XX(X+1)=XX(X-1):X=X-1:GOTO 2330
  336. 2320  XX(X+1)=XX(X)
  337. 2330  NEXT X
  338. 2335  IF LE=AMAP THEN XX(V)=YY:FORM$(XX(V))=STRING$(82,32):MID$(FORM$(XX(V)),80,2)=CHR$(2)+CHR$(1):GOTO 2345
  339. 2336  IF LE+1=EP THEN LE=LE+1
  340. 2340  XX(V)=XX(LE+1):XX(LE+1)=YY
  341. 2345  IF RF=1 THEN 2384
  342. 2350  LOCATE 24-B+V,1:PRINT STRING$(79,32);
  343. 2360  FOR X=V TO B
  344. 2362  LOCATE 24-B+X,1
  345. 2364  IF X=AMAP THEN 2370
  346. 2365  IF X=B THEN PRINT MID$(FORM$(XX(X)),1,78);:GOTO 2380
  347. 2366  IF MID$(FORM$(XX(X)),80,1)=CHR$(2) AND MID$(FORM$(XX(X+1)),80,1)=CHR$(2) THEN PRINT:GOTO 2380
  348. 2370  PRINT MID$(FORM$(XX(X)),1,79);
  349. 2380  NEXT
  350. 2384  IF LE=AMAP THEN 2390
  351. 2385  LE=LE+1
  352. 2390  GOTO 2480
  353. 2400  GOSUB 1900:YY=XX(V)
  354. 2401  IF V>LE THEN 2480
  355. 2402  IF RF=1 THEN 2403 ELSE LOCATE 24-B+V,H:PRINT " ";
  356. 2403  FOR X=V TO LE-1
  357. 2404  IF X=AMAP THEN 2420
  358. 2405  IF X=EP-1 THEN XX(X)=XX(X+2):X=X+1:GOTO 2420
  359. 2410  XX(X)=XX(X+1)
  360. 2420  NEXT X
  361. 2425  XX(LE)=YY
  362. 2430  FORM$(XX(LE))=STRING$(81,32):MID$(FORM$(XX(LE)),80,2)=CHR$(2)+CHR$(1)
  363. 2440  IF RF=1 THEN 2475
  364. 2445  LOCATE 24-B+V,1:PRINT MID$(FORM$(XX(V)),1,79);
  365. 2450  FOR X=V+1 TO B-1
  366. 2452  LOCATE 24-B+X,1
  367. 2455  IF MID$(FORM$(XX(X)),80,1)=CHR$(2) AND MID$(FORM$(XX(X-1)),80,1)=CHR$(2) THEN PRINT:GOTO 2470
  368. 2460  PRINT MID$(FORM$(XX(X)),1,79);
  369. 2470  NEXT X
  370. 2474  LOCATE 24,1:PRINT MID$(FORM$(XX(B)),1,78);
  371. 2475  LE=LE-1
  372. 2480  IF RF=1 THEN 2496 ELSE LOCATE 24-B+V,H
  373. 2490  COLOR 8,7:PRINT MID$(FORM$(XX(V)),H,1);:COLOR 7,0
  374. 2495  LOCATE 24-B+V,H
  375. 2496  GOSUB 1910:RETURN
  376. 2500  IF ERR=61 THEN KILL FILE$:ON ERROR GOTO 2505:RESUME 2502
  377. 2501  ON ERROR GOTO 0:RESUME
  378. 2502  NAME BFILE$ AS FILE$:LOCATE 20,10:PRINT "THIS DISK IS FULL, PLEASE INSERT ANOTHER BLANK, INITIALIZED DISK ";:FOR ZZ=1 TO 10000:NEXT ZZ:RESUME 1210
  379. 2505  LOCATE 20,10:PRINT "THIS DISK IS FULL, PLEASE INSERT ANOTHER BLANK, INITIALIZED DISK ";:FOR ZZ=1 TO 10000:NEXT ZZ:RESUME 1210
  380. 2510  ON ERROR GOTO 0:RESUME 1210
  381. 2600  SS=1:GOSUB 2700
  382. 2610  IF X=79 THEN RETURN ELSE L=X
  383. 2620  LOCATE 24-B+V,1:PRINT STRING$(79,32);
  384. 2630  SS=INSTR(X+1,FORM$(XX(V))," "):GOSUB 2700
  385. 2640  IF X<>79 THEN 2630
  386. 2645  IF SS=1 THEN RETURN
  387. 2650  R=79-SS:X=INT((L+R)/2+0.5):LOCATE 24-B+V,1:PRINT STRING$(X,32);MID$(FORM$(XX(V)),L,SS-L);
  388. 2660  FORM$(XX(V))=STRING$(X,32)+MID$(FORM$(XX(V)),L,80-X)+CHR$(1)
  389. 2665  GOSUB 1450:RETURN
  390. 2700  FOR X=SS TO 79
  391. 2710  IF MID$(FORM$(XX(V)),X,1)<>" " THEN RETURN
  392. 2720  NEXT X
  393. 2730  RETURN 2645
  394. 2800  OH=1:RH=LM:RF=1:FTF=1
  395. 2804  LOCATE 24-B+V,H:PRINT MID$(FORM$(XX(V)),H,1);:V=V-1
  396. 2805  GOSUB 3000:OLM=OH:OH=1
  397. 2806  V=V+1:GOSUB 3000
  398. 2807  IF OH>79 THEN IF OLM<LM THEN FTF=0 ELSE OLM=LM 'if sub olm=1 for ftf will  keep a one line parpagram margin otherwise lm justifies the line
  399. 2808  IF OH>79 THEN 2810
  400. 2809  IF OLM>=OH THEN OLM=OH ELSE 2999
  401. 2810  OH=1:GOSUB 2300
  402. 2820  GOSUB 3000
  403. 2821  IF FTF=2  THEN FTF=0:IF OH<>OLM THEN 2999
  404. 2822  IF FTF=1 THEN FTF=0:CL=EN:RH=LM:OH=OLM
  405. 2823  IF RH+CL>RM THEN V=V+1:GOSUB 2300:RH=LM
  406. 2824  IF EP=V+1 THEN Z=2 ELSE Z=1
  407. 2830  MID$(FORM$(XX(V)),RH,CL)=MID$(FORM$(XX(V+Z)),OH,CL):MID$(FORM$(XX(V)),80,2)=" "+CHR$(1):RH=RH+CL:OH=OH+CL:GOTO 2820
  408. 2999  S=4:GOSUB 1500:RF=0:GOTO 1450
  409. 3000  IF EP=V+1 THEN Z=2 ELSE Z=1
  410. 3004  IF MID$(FORM$(XX(V+Z)),OH,1)=" " THEN OH=OH+1:GOTO 3000
  411. 3005  IF FTF=1 THEN 3030
  412. 3010  IF MID$(FORM$(XX(V+Z)),OH,1)=CHR$(2) THEN RETURN 2999
  413. 3020  IF MID$(FORM$(XX(V+Z)),OH,1)=CHR$(1) THEN V=V+Z:FTF=2:GOSUB 2400:V=V-Z:OH=1
  414. 3030  EN=INSTR(OH,FORM$(XX(V+Z))," "):CL=EN-OH+1:RETURN
  415.